﻿
// 3536. 打牌.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>

using namespace std;
/*
https://www.acwing.com/problem/content/3539/

牌只有 1 到 9，手里拿着已经排好序的牌 a，对方出牌 b，用程序判断手中牌是否能够压过对方出牌。

规则：出牌牌型有 5种：

“一张”，如 4，则 5…9可压过。
“两张”，如 44则 55,66,77,…,99 可压过。
“三张”，如 444规则如“两张”。
“四张”，如 4444，规则如“两张”。
“五张”，牌型只有 12345,23456,34567,45678,56789
 五种，后面的比前面的均大。
输入格式
第一行包含字符串 a，表示手中的牌。

第二行包含字符串 b，表示对方出的牌。

输出格式
若能压过输出 YES，否则 NO。

数据范围
a 的长度不超过 100,b 保证合法。

输入样例：
12233445566677
33
输出样例：
YES
*/

int hashArr[10];
string str;

int main()
{
	cin >> str;

	for (int i = 0; i < str.size(); i++) {
		int v = str[i] - '0';
		hashArr[v]++;
	}
	string opp;
	cin >> opp;

	if (opp.size() == 1) {
		int v = opp[0] - '0';
		for (int i = 1 + v; i <= 9; i++) {
			if (hashArr[i] > 0) {
				cout << "YES" << endl; return 0;
			}
		}

		cout << "NO" << endl; return 0;
	}
	else if (opp.size() == 2) {
		int v = opp[0] - '0';
		for (int i = 1 + v; i <= 9; i++) {
			if (hashArr[i] > 1) {
				cout << "YES" << endl; return 0;
			}
		}

		cout << "NO" << endl; return 0;
	}
	else if (opp.size() == 3) {
		int v = opp[0] - '0';
		for (int i = 1 + v; i <= 9; i++) {
			if (hashArr[i] > 2) {
				cout << "YES" << endl; return 0;
			}
		}

		cout << "NO" << endl; return 0;
	}
	else if (opp.size() == 4) {
		int v = opp[0] - '0';
		for (int i = 1 + v; i <= 9; i++) {
			if (hashArr[i] >  3) {
				cout << "YES" << endl; return 0;
			}
		}

		cout << "NO" << endl; return 0;
	}
	else if (opp.size() == 5) {
		int v = opp[0] - '0'+4;
		for (int i = 9; i > v; i--) {
			if (hashArr[i] > 0 && hashArr[i - 1] > 0 && hashArr[i - 2] > 0 && hashArr[i - 3] > 0 && hashArr[i - 4] > 0) {
				cout << "YES" << endl; return 0;
			}
		}

		cout << "NO" << endl; return 0;
	}


	return 0;
}
 